Skip to content

Conversation

@CheorHyeon
Copy link
Owner

@CheorHyeon CheorHyeon commented Aug 12, 2023

구현한 기능 중 마크다운 에디터 기능이 th:utext 타임리프 문법을 그대로 사용하기에, XSS 공격에 취약했습니다.

이를 해결하고자 common mark와 java-html-sanitizer를 같이 사용하였습니다.

commonmark에서는 일부 HTML 태그의 경우 extension 의존성을 주입해야 sanitizer에 적용 가능하여 각각 issue와 파일을 찾아가며 의존성 버전을 맞췄습니다.

개선 사항

  • 마크다운 문법에 해당하는 것들을 모두 허용 시키고 나머지는 렌더링을 하지 않으며 XSS 공격에 방어할 수 있었습니다.
  • 또한 렌더링에 필요한 객체들을 빈으로 등록하여 페이지 렌더링 할 때마다 생성하지 않도록 하였습니다.
  • 사용하지 않는 코드를 제거하였습니다.

src/main/resources/static/markdown.css

  • 일부 태그의 경우 태그만 생기고 스타일이 적용되지 않아 적용시켰습니다.

src/main/resources/templates/question/question_detail.html

  • 마크다운 Code 태그 적용하면 글꼴이 빨간색에 가운데 정렬이 기본값이였습니다.
  • 마크다운 스타일과 유사하게 하기 위해 highlight 라이브러리를 적용시켰습니다.
  • 아래의 형태여야 적용되기에, HTML 파일 처음에 렌더링 될 때 태그 추가하도록 메서드 구현했습니다.
<pre><code> </pre></code>

** Answer / Question

  • Question Detail 페이지 보여질 때 댓글 개수를 보여줄 때 댓글 전체를 다 가져와서 보여줍니다.
  • 댓글 조회를 누르지 않으면 개수만 필요하기에 Count쿼리가 실행 되도록 수정하였습니다.
    • @LazyCollection(LazyCollectionOption.EXTRA) 옵션 활용

Close #20

@CheorHyeon CheorHyeon added the documentation Improvements or additions to documentation label Aug 12, 2023
@CheorHyeon CheorHyeon self-assigned this Aug 12, 2023
@CheorHyeon CheorHyeon added enhancement New feature or request and removed documentation Improvements or additions to documentation labels Aug 12, 2023
@CheorHyeon CheorHyeon changed the title 리팩토링 : XSS 공격 대비 리팩토링 : XSS 공격 대비 및 불필요 코드 제거 Aug 15, 2023
@CheorHyeon CheorHyeon merged commit 769897b into main Aug 15, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

추가 기능 리팩토링

2 participants